{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "02897acd",
   "metadata": {},
   "source": [
    "# Ungraded Lab:  Overfitting \n",
    "\n",
    "<img align=\"left\" src=\"../work/images/C1_W3_Overfitting_a.png\"     style=\" width:250px; padding: 10px; \" >\n",
    "<img align=\"left\" src=\"../work/images/C1_W3_Overfitting_b.png\"     style=\" width:250px; padding: 10px; \" >\n",
    "<img align=\"left\" src=\"../work/images/C1_W3_Overfitting_c.png\"     style=\" width:250px; padding: 10px; \" >"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79bfebed",
   "metadata": {},
   "source": [
    "## Goals\n",
    "In this lab, you will explore:\n",
    "- the situations where overfitting can occur\n",
    "- some of the solutions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "39b2dc57",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-17T12:21:55.755148Z",
     "start_time": "2022-06-17T12:21:52.177292Z"
    }
   },
   "outputs": [],
   "source": [
    "%matplotlib widget\n",
    "import matplotlib.pyplot as plt\n",
    "from ipywidgets import Output\n",
    "from plt_overfit import overfit_example, output\n",
    "plt.style.use('./deeplearning.mplstyle')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0a512845",
   "metadata": {},
   "source": [
    "# Overfitting\n",
    "The week's lecture described situations where overfitting can arise. Run the cell below to generate a plot that will allow you to explore overfitting. There are further instructions below the cell."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c5db6057",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-06-17T12:21:57.348873Z",
     "start_time": "2022-06-17T12:21:55.761133Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7f0b2acc7dd746da88af204eef037582",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.close(\"all\")\n",
    "display(output)\n",
    "ofit = overfit_example(False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "567bb209",
   "metadata": {},
   "source": [
    "In the plot above you can:\n",
    "- switch between Regression and Categorization examples\n",
    "- add data\n",
    "- select the degree of the model\n",
    "- fit the model to the data  \n",
    "\n",
    "Here are some things you should try:\n",
    "- Fit the data with degree = 1; Note 'underfitting'.\n",
    "- Fit the data with degree = 6; Note 'overfitting'\n",
    "- tune degree to get the 'best fit'\n",
    "- add data:\n",
    "    - extreme examples can increase overfitting (assuming they are outliers).\n",
    "    - nominal examples can reduce overfitting\n",
    "- switch between `Regression` and `Categorical` to try both examples.\n",
    "\n",
    "To reset the plot, re-run the cell. Click slowly to allow the plot to update before receiving the next click.\n",
    "\n",
    "Notes on implementations:\n",
    "- the 'ideal' curves represent the generator model to which noise was added to achieve the data set\n",
    "- 'fit' does not use pure gradient descent to improve speed. These methods can be used on smaller data sets. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "58025b67",
   "metadata": {},
   "source": [
    "## Congratulations!\n",
    "You have developed some intuition about the causes and solutions to overfitting. In the next lab, you will explore a commonly used solution, Regularization."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "33656937",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0ecc0b99",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
